sql是否会走索引的几种情况 |
您所在的位置:网站首页 › sql中的union和union all走索引吗 › sql是否会走索引的几种情况 |
、BETWEEN走范围索引range。 !=、不走索引 (查看表的索引的语句:show keys from 表名) like 模糊查询 前模糊或者 全模糊不走索引 or条件走不走索引:1、只要有一个条件字段没有添加索引,就不走索引。 比如:explain select * from users u where u.name = 'mysql测试' or u.password ='JspStudy' password如果没有加所以,这条sql就不会走索引。 2、or 条件都是同一个索引字段,走索引。 比如:explain select * from users u where u.name= 'mysql测试' or u.name='333' 那么这一天如何使用索引呢? # 使用 union all 代替 or 这样的话有索引例的就会走索引 explain select * from users u where u.name = 'mysql测试' union select * from users u where u.password = 'JspStudy' # in 走索引,但是当in的查询范围比较大的时候,索引可能会失效,走全表扫描 # not in 不走索引 exists会不会走索引? exists是以外层表为驱动表,会全表扫描,而内层表通过走索引,可以快速判断当前记录是否匹配。所以用exists主查询会全表扫描,子查询可能会使用索引。 SELECT * FROM `user` WHERE `user`.id IN ( SELECT `order`.user_id FROM `order`) SELECT `user`.* FROM `user` WHERE EXISTS ( SELECT `order`.user_id FROM `order` WHERE `user`.id = `order`.user_id) |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |